software framework (software genre)